<?php

namespace app\api\controller;

class Account
{

    private $token = null;
    private $acct = null;
    public function __construct($token)
    {
        //判断token是否有效，通过token读取学生的所有信息
        $acct = Account::where('member_token', $token)->find();
        if (!$acct) {
            return false;
        }
        $this->token = $token;
        $this->acct = $acct;
        return $this->getData($acct);
    }

    //注册功能
    public function getData(Account $acct)
    {
        //输出信息，去除“member_password”字段
        $info = [
            '学号' => $acct->member_id,
            '姓名' => $acct->member_name,
            '手机' => $acct->member_mobile,
            '性别' => $acct->member_gender,
        ];
        return $info;
    }

    public function modifyName($name)
    {
        //修改学生姓名，学生姓名可重复。
        $this->acct->member_name = $name;
        $this->acct->save();
    }

    public function modifyAvatar(Request $request)
    {
        //修改学生头像，需要自行创建文件夹，文件系统。
        //学生头像文件唯一，更新时需要删除原有的文件。
        $memberId = $this->acct->member_id;//用学号做唯一标识
        $suffix='jpg,jpeg,png,gif';  //文件格式
        $size='3'; //文件大小
        $file = $request->file('file');
        try{
            validate(['file'=>[
                'fileSize'      =>  $size * 1024 * 1024,
                'fileExt'       =>  'jpg,jpeg,png,gif'
            ]],[
                'file.fileSize' =>  '上传的文件大小不能超过'.$size.'M',
                'file.fileExt'  =>  '请上传后缀为:'.$suffix.'的文件'
            ])->check(['file'=>$file]);

            $fP = dirname(__DIR__) . "/public/avatar".$memberId."_Avatar".$file->getExtension();
            if (is_file($fP)) {
                unlink($fP);//删除原图片
            }

            // 上传图片到本地服务器
            $saveName = \think\facade\Filesystem::disk('public')->putFile( 'avatar', $file, function ($memberId){return $memberId . '_Avatar';});

            output_data("图片上传成功");
        } catch (\Exception $e) {
            output_error("图片上传失败");
        }
    }

}
